Wemos D1 R2 mini - Schrankenalarm




Beschreibung

Ausfahrt-Schrankenalarm
LDR Sensor wird auf dem Tableau auf den Schalter mit der LED fuer die Ausfahrtsschranke gesetzt.
Diese LED leuchtet wenn die Ausfahrtsschranke geschlossen ist.
Sobald die Ausfahrtsschranke geoeffnet wird, erlischt die LED am Tableau, was der LDR erkennt.
Wenn also die Schranke geoeffnet wird, ertoent ein Alarmton bis die
Schranke wieder geschlossen ist und die LED am Tableaut wieder eingeschaltet wird.
Man kann auswählen, ob als Alarmton der Darth Vader Sound oder ein normaler mehrtöniger Alarm abgespielt werden soll.

Arduino Sketch

      /*
  Ausfahrt-Schrankenalarm
  LDR Sensor wird auf dem Tableau auf den Schalter mit der LED fuer die Ausfahrtsschranke gesetzt.
  Diese LED leuchtet wenn die Ausfahrtsschranke geschlossen ist.
  Sobald die Ausfahrtsschranke geoeffnet wird, geht die LED, was der LDR erkennt.
  Wenn also die Schranke geoeffnet wird, ertoent ein Alarmton bis die
  Schranke wieder geschlossen ist und die LED am Tableaut wieder eingeschaltet wird.

  1 x ESP8266 D1 R2 Mini
  1 x LDR
  1 x Buzzer
  1 x 10k Widerstand für LDR
*/

byte BUZZER_PIN = D7;
boolean DEBUG = true;
boolean DARTHVADER = true;

#define LICHT_AUS 850 // Schwellwert des LDR, Faellt die Umgebungshelligkeit unter den Wert, wird ein Alarm ausgeloest
#define INTERVAL 250  // Interval fuer Alarmton wenn DARTHVADER = false
#define ALARMTON 1500 // Höhe des Alarmtones wenn DARTHVADER = false


/************************************************************
  Darth Vader Tonausgabe wenn Schranke geöffnet ist - START
************************************************************/
// Notenfrequenzen
#define NOTE_A4  440
#define NOTE_A3  220
#define NOTE_F4  349
#define NOTE_C5  523
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_G5  784
#define NOTE_A5  880
#define NOTE_C4  262
#define NOTE_E4  330
#define NOTE_G4  392

// Imperial March (Darth Vader)
int melody[] = {
  NOTE_A4, NOTE_A4, NOTE_A4,
  NOTE_F4, NOTE_C5,
  NOTE_A4, NOTE_F4, NOTE_C5,
  NOTE_A4,

  NOTE_E5, NOTE_E5, NOTE_E5,
  NOTE_F5, NOTE_C5,
  NOTE_G4, NOTE_F4, NOTE_C5,
  NOTE_A4
};

int noteDurations[] = {
  500, 500, 500,
  350, 150,
  500, 350, 150,
  1000,

  500, 500, 500,
  350, 150,
  500, 350, 150,
  1000
};
/************************************************************
  Darth Vader Tonausgabe wenn Schranke geöffnet ist - ENDE
************************************************************/



void setup()
{
  pinMode(BUZZER_PIN, OUTPUT);
  delay(1000);
  if(DEBUG) Serial.begin(19200);
}



void loop()
{
  int LDRReading  = analogRead(0);

  if(DEBUG) Serial.print("LDR Value: ");
  Serial.println(LDRReading);

  if(LDRReading < (LICHT_AUS))
  {
    if (DARTHVADER == false)
    {
      playSound();
    }
    else
    {
      for (int i = 0; i < 18; i++)
      {
        tone(BUZZER_PIN, melody[i], noteDurations[i]);
        delay(noteDurations[i] * 1.0);
        noTone(BUZZER_PIN);
      }
    }
  }
  else
  {
    noTone(BUZZER_PIN);
  }
}



void playSound(void) {
  tone(BUZZER_PIN, ALARMTON, INTERVAL);
  delay(50);
  tone(BUZZER_PIN, ALARMTON+1000, INTERVAL-100);
  delay(250);
  tone(BUZZER_PIN, ALARMTON+800, INTERVAL);
  delay(150);
  tone(BUZZER_PIN, ALARMTON+600, INTERVAL-100);
  delay(150);
}

      
    

Schaltplan

Schrankenalarm Schaltplan

Platine oben

Schrankenalarm Platine oben

Platine unten

Schrankenalarm Platine unten

Fritzing-Datei

Schrankenalarm.zip